package core

import (
	"github.com/go-redis/redis/v8"
	"gorm.io/driver/mysql" // MySQL 驱动，用于 GORM 连接 MySQL 数据库
	"gorm.io/gorm"         // GORM ORM 框架
	"log"                  // 日志包，用于记录错误信息
)

var DB = Init()         // 全局数据库连接实例，应用启动时初始化
var RDB = InitRedisDB() // 声明并初始化全局Redis客户端实例

// Init 初始化数据库连接并返回 *gorm.DB 实例
func Init() *gorm.DB {
	// 数据库连接字符串，格式: user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local
	dsn := "root:root@tcp(127.0.0.1:3306)/gin_gorm_oj?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		// 不生成外键约束，避免迁移时的复杂依赖问题
		DisableForeignKeyConstraintWhenMigrating: true,
	}) // 建立数据库连接
	if err != nil { // 检查连接错误
		log.Println("Gorm Init Error:", err) // 记录数据库初始化错误
	}
	return db // 返回数据库连接实例
}

// InitRedisDB 初始化Redis数据库连接
// 返回Redis客户端实例指针
func InitRedisDB() *redis.Client {
	return redis.NewClient(&redis.Options{
		Addr:     "localhost:6379", // Redis服务器地址和端口
		Password: "1234",           // 密码（空表示无密码）
		DB:       0,                // 数据库编号（0表示默认数据库）
	})
}
